package com.guaoran.interview.in2018.collection.map;

import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
import java.util.Set;

/**
 * @Author gucheng
 * @Description
 *  HashTable
 * 2019-04-01 16:41
 */
public class HashTableDemo {
    public static void main(String[] args) {
        /**
         * HashMap 线程不安全，允许key 和value 为空，
         *  在计算hashCode 的时候，如果key为空，则hashcode是0，
         * HashTable 线程安全，不允许 key 和 value 为空，
         *  在一开始会判断value是否为空，为空则直接抛出空指针异常，
         *  后面会计算key的hashcode，是直接<code>key.hashCode()</code> ,此时key为空，则直接抛出空指针
         */
        System.out.println(0x7FFFFFFF);///2的31次方-1
        Map map = new HashMap();
        map.put(null,null);
        map.put(null,22);
        System.out.println(map);
        Map hashtable = new Hashtable();
        //下面会空指针异常
        for (int i = 0; i < 10; i++) {
            hashtable.put("i"+i, i);
        }
        Set set = hashtable.entrySet();
        set.forEach(m->{
            Map.Entry e = (Map.Entry) m;
            System.out.println(e.getKey()+","+e.getValue());
        });

        hashtable.get("i2");

    }
}
